<TagAttribute("model_collision_geometry","coll","????","????",10,664)>
Public Class MODEL_COLLISION_GEOMETRY_TAG
Inherits HaloTag
Public Const Extension as String = "model_collision_geometry"
Public Const FourCC as String = "coll"
Public Const ParentFourCC as String = "????"
Public Const GrandParentFourCC as String = "????"
Public Const [Version] as Short = 10
Public Const HeaderLength as Integer = 664

''' <summary>
''' 
''' </summary>
<TagField("flags", 1, 20)>
Public flags as Integer

''' <summary>
''' the material we use when shielding child objects or getting hit by area of effect damage
''' </summary>
<TagField("indirect damage material", 1, 23)>
Public indirect_damage_material as Short

''' <summary>
''' 
''' </summary>
<TagField("", 2, -1)>
Public padding as Byte()

''' <summary>
''' 
''' </summary>
#Region "body"

''' <summary>
''' the default initial and maximum body vitality of this object
''' </summary>
<TagField("maximum body vitality", 1, 0)>
Public maximum_body_vitality as Single

''' <summary>
''' anything that kills us (body depleted) doing more than this amount of damage also destroys us
''' </summary>
<TagField("body system shock", 1, 0)>
Public body_system_shock as Single

''' <summary>
''' 
''' </summary>
<TagField("", 24, -1)>
Public padding_1 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 28, -1)>
Public padding_2 as Byte()

''' <summary>
''' the fraction of damage caused by friendly units ignored by this object (zero means full damage)
''' </summary>
<TagField("friendly damage resistance:[0,1]", 1, 0)>
Public friendly_damage_resistance as Single

''' <summary>
''' 
''' </summary>
<TagField("", 8, -1)>
Public padding_3 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 32, -1)>
Public padding_4 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("localized damage effect", 16, 10)>
Public localized_damage_effect as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("area damage effect threshold:[0,1]", 1, 0)>
Public area_damage_effect_threshold as Single

''' <summary>
''' 
''' </summary>
<TagField("area damage effect", 16, 10)>
Public area_damage_effect as New TAG_REFERENCE

''' <summary>
''' when passing this vitality the 'body damaged' effect, below, is created
''' </summary>
<TagField("body damaged threshold", 1, 0)>
Public body_damaged_threshold as Single

''' <summary>
''' 
''' </summary>
<TagField("body damaged effect", 16, 10)>
Public body_damaged_effect as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("body depleted effect", 16, 10)>
Public body_depleted_effect as New TAG_REFERENCE

''' <summary>
''' when passing this vitality (usually negative) the object is deleted
''' </summary>
<TagField("body destroyed threshold", 1, 0)>
Public body_destroyed_threshold as Single

''' <summary>
''' 
''' </summary>
<TagField("body destroyed effect", 16, 10)>
Public body_destroyed_effect as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
#End Region
#Region "shield"

''' <summary>
''' the default initial and maximum shield vitality of this object
''' </summary>
<TagField("maximum shield vitality", 1, 0)>
Public maximum_shield_vitality as Single

''' <summary>
''' 
''' </summary>
<TagField("", 2, -1)>
Public padding_5 as Byte()

''' <summary>
''' the material type used when projectiles impact the shield (instead of the body)
''' </summary>
<TagField("shield material type", 1, 17)>
Public shield_material_type as Short

''' <summary>
''' 
''' </summary>
<TagField("", 24, -1)>
Public padding_6 as Byte()

''' <summary>
''' how fast the shield begins to leak
''' </summary>
<TagField("shield failure function", 1, 17)>
Public shield_failure_function as Short

''' <summary>
''' 
''' </summary>
<TagField("", 2, -1)>
Public padding_7 as Byte()

''' <summary>
''' when the shield begins to leak (0.5 would cause the shield to begin to fail after taking half damage)
''' </summary>
<TagField("shield failure threshold", 1, 0)>
Public shield_failure_threshold as Single

''' <summary>
''' the maximum percent [0,1] damage a failing shield will leak to the body
''' </summary>
<TagField("failing shield leak fraction", 1, 0)>
Public failing_shield_leak_fraction as Single

''' <summary>
''' 
''' </summary>
<TagField("", 16, -1)>
Public padding_8 as Byte()

''' <summary>
''' the minimum damage required to stun this object's shields
''' </summary>
<TagField("minimum stun damage", 1, 0)>
Public minimum_stun_damage as Single

''' <summary>
''' the length of time the shields stay stunned (do not recharge) after taking damage
''' </summary>
<TagField("stun time:seconds", 1, 0)>
Public stun_time as Single

''' <summary>
''' the length of time it would take for the shields to fully recharge after being completely depleted
''' </summary>
<TagField("recharge time:seconds", 1, 0)>
Public recharge_time as Single

''' <summary>
''' 
''' </summary>
<TagField("", 16, -1)>
Public padding_9 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 96, -1)>
Public padding_10 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("shield damaged threshold", 1, 0)>
Public shield_damaged_threshold as Single

''' <summary>
''' 
''' </summary>
<TagField("shield damaged effect", 16, 10)>
Public shield_damaged_effect as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("shield depleted effect", 16, 10)>
Public shield_depleted_effect as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("shield recharging effect", 16, 10)>
Public shield_recharging_effect as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("", 12, -1)>
Public padding_11 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 112, -1)>
Public padding_12 as Byte()

''' <summary>
''' damage_materials_block
''' </summary>
<TagField("materials", 72, 11)>
Public materials as List(Of MATERIALS_BLOCK)

''' <summary>
''' damage_regions_block
''' </summary>
<TagField("regions", 84, 11)>
Public regions as List(Of REGIONS_BLOCK)

''' <summary>
''' damage_modifiers_block
''' </summary>
<TagField("modifiers", 52, 11)>
Public modifiers as List(Of MODIFIERS_BLOCK)

''' <summary>
''' 
''' </summary>
<TagField("", 16, -1)>
Public padding_13 as Byte()

''' <summary>
''' 
''' </summary>
#End Region
#Region "pathfinding box"

''' <summary>
''' 
''' </summary>
<TagField("x", 2, 1)>
Public x as Single()

''' <summary>
''' 
''' </summary>
<TagField("y", 2, 1)>
Public y as Single()

''' <summary>
''' 
''' </summary>
<TagField("z", 2, 1)>
Public z as Single()

''' <summary>
''' sphere
''' </summary>
<TagField("pathfinding spheres", 32, 11)>
Public pathfinding_spheres as List(Of PATHFINDING_SPHERES_BLOCK)

''' <summary>
''' node
''' </summary>
<TagField("nodes", 64, 11)>
Public nodes as List(Of NODES_BLOCK)
#End Region
Public Class MATERIALS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("name^", 32, 8)>
Public name as String

''' <summary>
''' 
''' </summary>
<TagField("flags", 1, 20)>
Public flags as Integer

''' <summary>
''' 
''' </summary>
<TagField("material type", 1, 17)>
Public material_type as Short

''' <summary>
''' 
''' </summary>
<TagField("", 2, -1)>
Public padding as Byte()

''' <summary>
''' the percent [0,1] damage the shield always leaks through to the body
''' </summary>
<TagField("shield leak percentage", 1, 0)>
Public shield_leak_percentage as Single

''' <summary>
''' 
''' </summary>
<TagField("shield damage multiplier", 1, 0)>
Public shield_damage_multiplier as Single

''' <summary>
''' 
''' </summary>
<TagField("", 12, -1)>
Public padding_1 as Byte()

''' <summary>
''' multiplier to body damage against this material (1.0 is normal)
''' </summary>
<TagField("body damage multiplier", 1, 0)>
Public body_damage_multiplier as Single

''' <summary>
''' 
''' </summary>
<TagField("", 8, -1)>
Public padding_2 as Byte()

End Class
Public Class REGIONS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("name^", 32, 8)>
Public name as String

''' <summary>
''' 
''' </summary>
<TagField("flags", 1, 20)>
Public flags as Integer

''' <summary>
''' 
''' </summary>
<TagField("", 4, -1)>
Public padding as Byte()

''' <summary>
''' if this region takes this amount of damage, it will be destroyed
''' </summary>
<TagField("damage threshold", 1, 0)>
Public damage_threshold as Single

''' <summary>
''' 
''' </summary>
<TagField("", 12, -1)>
Public padding_1 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("destroyed effect", 16, 10)>
Public destroyed_effect as New TAG_REFERENCE

''' <summary>
''' damage_permutations_block
''' </summary>
<TagField("permutations", 32, 11)>
Public permutations as List(Of PERMUTATIONS_BLOCK)
Public Class PERMUTATIONS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("name^", 32, 8)>
Public name as String

End Class

End Class
Public Class MODIFIERS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("", 52, -1)>
Public padding as Byte()

End Class
Public Class PATHFINDING_SPHERES_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("node", 1, 23)>
Public node as Short

''' <summary>
''' 
''' </summary>
<TagField("", 2, -1)>
Public padding as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 12, -1)>
Public padding_1 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("center", 3, 2)>
Public center as Single()

''' <summary>
''' 
''' </summary>
<TagField("radius", 1, 0)>
Public radius as Single

End Class
Public Class NODES_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("name^", 32, 8)>
Public name as String

''' <summary>
''' 
''' </summary>
<TagField("region", 1, 23)>
Public region as Short

''' <summary>
''' 
''' </summary>
<TagField("parent node", 1, 23)>
Public parent_node as Short

''' <summary>
''' 
''' </summary>
<TagField("next sibling node", 1, 23)>
Public next_sibling_node as Short

''' <summary>
''' 
''' </summary>
<TagField("first child node", 1, 23)>
Public first_child_node as Short

''' <summary>
''' 
''' </summary>
<TagField("", 12, -1)>
Public padding as Byte()

''' <summary>
''' bsp
''' </summary>
<TagField("bsps", 96, 11)>
Public bsps as List(Of BSPS_BLOCK)
Public Class BSPS_BLOCK

''' <summary>
''' bsp3d node
''' </summary>
<TagField("bsp3d nodes", 12, 11)>
Public bsp3d_nodes as List(Of BSP3D_NODES_BLOCK)

''' <summary>
''' plane
''' </summary>
<TagField("planes", 16, 11)>
Public planes as List(Of PLANES_BLOCK)

''' <summary>
''' leaf
''' </summary>
<TagField("leaves", 8, 11)>
Public leaves as List(Of LEAVES_BLOCK)

''' <summary>
''' bsp2d reference
''' </summary>
<TagField("bsp2d references", 8, 11)>
Public bsp2d_references as List(Of BSP2D_REFERENCES_BLOCK)

''' <summary>
''' bsp2d node
''' </summary>
<TagField("bsp2d nodes", 20, 11)>
Public bsp2d_nodes as List(Of BSP2D_NODES_BLOCK)

''' <summary>
''' surface
''' </summary>
<TagField("surfaces", 12, 11)>
Public surfaces as List(Of SURFACES_BLOCK)

''' <summary>
''' edge
''' </summary>
<TagField("edges", 24, 11)>
Public edges as List(Of EDGES_BLOCK)

''' <summary>
''' vertex
''' </summary>
<TagField("vertices", 16, 11)>
Public vertices as List(Of VERTICES_BLOCK)
Public Class BSP3D_NODES_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("plane", 1, 4)>
Public plane as Integer

''' <summary>
''' 
''' </summary>
<TagField("back child", 1, 4)>
Public back_child as Integer

''' <summary>
''' 
''' </summary>
<TagField("front child", 1, 4)>
Public front_child as Integer

End Class
Public Class PLANES_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("plane", 4, 3)>
Public plane as Single()

End Class
Public Class LEAVES_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("flags*", 1, 19)>
Public flags as Short

''' <summary>
''' 
''' </summary>
<TagField("bsp2d reference count", 1, 23)>
Public bsp2d_reference_count as Short

''' <summary>
''' 
''' </summary>
<TagField("first bsp2d reference", 1, 4)>
Public first_bsp2d_reference as Integer

End Class
Public Class BSP2D_REFERENCES_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("plane", 1, 4)>
Public plane as Integer

''' <summary>
''' 
''' </summary>
<TagField("bsp2d node", 1, 4)>
Public bsp2d_node as Integer

End Class
Public Class BSP2D_NODES_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("plane", 3, 2)>
Public plane as Single()

''' <summary>
''' 
''' </summary>
<TagField("left child", 1, 4)>
Public left_child as Integer

''' <summary>
''' 
''' </summary>
<TagField("right child", 1, 4)>
Public right_child as Integer

End Class
Public Class SURFACES_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("plane", 1, 4)>
Public plane as Integer

''' <summary>
''' 
''' </summary>
<TagField("first edge", 1, 4)>
Public first_edge as Integer

''' <summary>
''' 
''' </summary>
<TagField("flags*", 1, 18)>
Public flags as Byte

''' <summary>
''' 
''' </summary>
<TagField("breakable surface", 1, 9)>
Public breakable_surface as Byte

''' <summary>
''' 
''' </summary>
<TagField("material", 1, 23)>
Public material as Short

End Class
Public Class EDGES_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("start vertex", 1, 4)>
Public start_vertex as Integer

''' <summary>
''' 
''' </summary>
<TagField("end vertex", 1, 4)>
Public end_vertex as Integer

''' <summary>
''' 
''' </summary>
<TagField("forward edge", 1, 4)>
Public forward_edge as Integer

''' <summary>
''' 
''' </summary>
<TagField("reverse edge", 1, 4)>
Public reverse_edge as Integer

''' <summary>
''' 
''' </summary>
<TagField("left surface", 1, 4)>
Public left_surface as Integer

''' <summary>
''' 
''' </summary>
<TagField("right surface", 1, 4)>
Public right_surface as Integer

End Class
Public Class VERTICES_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("point", 3, 2)>
Public point as Single()

''' <summary>
''' 
''' </summary>
<TagField("first edge", 1, 4)>
Public first_edge as Integer

End Class

End Class

End Class

End Class
